/**
 * @description 时间帮助类
 * @author 十一
 * @date 2022-12-07 22:54
 */
export const dateHelper = {
    /**
     * @description 13位unix时间戳转换成北京时间（两个参数都不传，则获取当前时间）
     * @param format 日期格式，不填时默认使用”yyyy-mm-dd HH:MM:SS“格式,更改只需替换中间连接符号就行”yyyy年mm月dd日 HH时MM分SS秒“
     * @param unixTimeStamp 13位或10位时间戳
     * @returns {string} 正常日期格式
     * @author 十一
     * @date 2022-12-07 22:52
     */
    unixTimeStamp13ToBeijingTime(format = "", unixTimeStamp = new Date().getTime()) {
        format = format || "yyyy-mm-dd HH:MM:SS";
        let date;
        if (unixTimeStamp.toString().length == 10) {
            date = new Date(parseInt(unixTimeStamp) * 1000);
        } else {
            date = new Date(parseInt(unixTimeStamp));
        }
        const formatObj = {
            "y": date.getFullYear().toString(),  // 年
            "m": (date.getMonth() + 1).toString(),  // 月
            "d": date.getDate().toString(),  // 日
            "H": date.getHours().toString(),  // 时
            "M": date.getMinutes().toString(),  // 分
            "S": date.getSeconds().toString()  // 秒
        };
        for (let item in formatObj) {
            let reg = new RegExp("(" + item + "+)").exec(format);
            if (reg) {
                let addZero = (reg[1].length == 1) ? (formatObj[item]) : (formatObj[item].padStart(reg[1].length, "0"));  // 根据复数前面是否补零,如“mm”补零，单“m”前面不补零
                format = format.replace(reg[1], addZero);
            }
        }
        return format;
    },
};

/**
 * @description 字符串帮助类
 * @author 十一
 * @date 2022-12-07 22:55
 */
export const stringHelper = {
    /**
     * @description 替换字符串
     * @param oldString 要替换的字符串
     * @param searchValue 需要替换的字符
     * @param replaceValue 替换字符
     * @return {string} 替换完成的字符串
     * @author 十一
     * @date 2022-12-07 22:56
     */
    stringReplaceSingle(oldString, searchValue, replaceValue) {
        return oldString.replace(searchValue, replaceValue);
    },
};

/**
 * @description 封装消息提示框
 * @author 十一
 * @date 2022-12-08 22:32
 */
export const showToastHelper = {
    /**
     * @description 消息提示框
     * @param code <br/>1：成功图标<br/>2：错误图标<br/>3：错误图标<br/>4：异常图标<br/>5：不显示图标
     * @param msg 提示消息
     * @author 十一
     * @date 2022-12-08 22:33
     */
    showToast(code, msg) {
        let iconStr = "";
        switch (code) {
            case 1:
                iconStr = "success";
                break;
            case 2:
                iconStr = "error";
                break;
            case 3:
                iconStr = "fail";
                break;
            case 4:
                iconStr = "exception";
                break;
            case 5:
                iconStr = "none";
                break;
        }
        uni.showToast({
            title: msg,
            icon: iconStr,
            duration: 2000
        });
    },

    /**
     * @description 打开 loading 提示框
     * @param msg 加载信息
     * @author 十一
     * @date 2022-12-08 22:53
     */
    showLoading(msg) {
        uni.showLoading({
            title: msg,
            mask: true
        });
    },

    /**
     * @description 关闭 loading 提示框
     * @author 十一
     * @date 2022-12-08 22:55
     */
    closeShowLoading() {
        uni.hideLoading();
    }
};

export default {
    dateHelper,
    stringHelper,
    showToastHelper
};
